home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
kowin
/
archive
/
sys
/
kowin14d.lzh
/
doc
/
original
/
event.doc
next >
Wrap
Text File
|
1991-07-04
|
8KB
|
202 lines
ウインドウシステム
イベント処理関数仕様 version 2.23
Copyright T.Kobayashi
1991.5.3
ウインドウを新たにオープンするとイベント処理関数を設定する必要があります。
ウインドウを描き直す必要が生じた時、ウインドウが移動した時、マウス、キー入力
の外部的なイベントが発生した時などにイベント処理関数が呼び出されます。
[例]
int EventExec( wp, info );
WindowID wp ; /* ウインドウID */
EventInfo *info ; /* イベント情報 */
{
int n ;
DrawBuf buf[10] ;
switch( info->option ) /* イベントの種類 */
{
case EventOpen : /* ウインドウのオープン時に発生 */
DrawSetClear( buf, 1 );
DrawSetLine( buf+1, .... );
...
...
WindowRedraw( wp );
return( TRUE );
case EventRedraw : /* 描き直し */
...
...
WindowDraw( wp, buf, n );
return( TRUE );
case EventClose : /* クローズボックスが押された時 */
WindowClose( wp );
WindowConnectionClose();
return( TRUE );
case EventMouseSwitch : /* マウスが押された時 */
...
...
return( TRUE );
}
return( FALSE );
}
(注意)イベント処理関数はウインドウがイベントを受け取った時は TRUE 、受け
取らなかった時はFALSE を返します。
EventInfo は wlib.h で次のように定義されています。
typedef struct {
EventOption option ; /* イベントの種類 */
int x, y, h, v ; /* 座標、大きさ */
int RightStat, LeftStat ; /* スイッチの状態 */
int LeftON, LeftOFF ; /* スイッチの変化 */
int RightON, RightOFF ;
int MoveFlag ; /* マウスの移動 */
int KeyCode ; /* キーコード */
int ShiftStat ; /* シフトキーの状態 */
int Counter ; /* カウンタ */
int ComData ; /* 通信データ */
void *ComBuffer ; /* 通信バッファ */
}
EventInfo ;
typedef enum {
EventOpen, /* 初期化 */
EventRedraw, /* 描き直し */
EventClose, /* クローズ */
EventPop, /* ポップ */
EventPush, /* プッシュ */
EventMove, /* 移動 */
EventResize, /* 変形 */
EventIconify, /* アイコン化 */
EventZoom, /* 拡大 */
EventScroll, /* スクロール */
EventMouseSwitch, /* マウスのスイッチ */
EventMouseMove, /* マウスの移動 */
EventMouseEnter, /* マウスの移動 */
EventMouseOut, /* マウスの移動 */
EventKey, /* キー入力 */
EventInterval, /* タイマイベント */
EventNon, /* イベントなし */
EventUser, /* ユーザイベント */
EventGraphic, /* グラフィックモード */
}
EventOption ;
以下にイベントの種類ごとに発生する条件とその時に設定される EventInfo のパラ
メータを示します。ただし、発生する条件を満たしていてもそのイベントに対する
イベント属性が設定されていなければこれらのイベントは発生しません。
EventOpen
ウインドウがオープンされた時に、一度だけ発生するイベントです。イベント
処理ルーチン内ではウインドウの各種パラメータの初期化を行わなければなりま
せん。まだ画面に表示されていないので WindowDraw 関数は実行できません。最
後に WindowRedraw 関数を実行するとオープンするとオープンすると同時に表示
されるようになります。
x , y はウインドウの左上座標、h , v はウインドウの大きさです。
EventRedraw
ウインドウが移動したりして描き直す必要が生じた時に発生します。このイベ
ントに対する処理は必ず定義しなければなりません。(これがなければウインド
ウは画面に見えません。)
x , y は描き直し領域の左上座標、h , v は描き直し領域の大きさです。ウイ
ンドウサーバ内でクリッピングするので描き直し領域より大きく描画してもかま
いません。
EventClose
クローズボックスが押された時と、ウインドウプログラムが終了しようとした
時、 KILL シグナルを受け取った時に発生します。
EventPop
タイトルバーでマウスをクリックした時に発生します。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventPush
プッシュボックスが押された時に発生します。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventMove
タイトルバーでマウスを移動させた時に発生します。
x, y にウインドウが移動するべき座標が設定されます。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventResize
リサイズボックスでマウスを移動させた時に発生します。
x , y はウインドウが移動するべき座標、h , v にウインドウ変更されるべき
大きさです。
EventIconify
アイコン化ボックスをクリックした時に発生します。
EventZoom
ズームボックスをクリックした時に発生します。
h , v はウインドウ変更されるべき大きさです。移動するべき位置は (0,0)
です。
EventScroll
スクロールウインドウにおいてスクロールバーでマウスがクリックされた時に
発生します。
x , y は変更されるべきホーム位置です。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventMouseSwitch
マウスのスイッチを押した時、離した時、押したままマウスを移動した時に発
生します。
x , y はマウスのローカル座標、LeftStat, RightStat はそれぞれ左、右のボ
タンの状態( ON の時 TRUE です。)LeftON, LeftOFF, RightON, RightOFF は
それぞれボタンを押した時、離した時のみ TRUE になります。MoveFlag はマウ
スを移動させた時のみ TRUE になります。
このイベントはマウスの位置にあるウインドウに対してのみ発生し、その他の
ウインドウに対しては発生しません。また、ルートウインドウの直接の子ウイン
ドウに対してのみ発生し、さらにその子ウインドウにはイベント処理関数内から
WindowSendEvent 関数で送らなければなりません。イベント情報を送るべき子ウ
インドウは WindowGetChild 関数でみつけることができます。
EventMouseMove EventMouseEnter EventMouseOut EventKey の各イベントにつ
いても同じです。
EventMouseMove
マウスのボタンを押さずに移動させた時に発生します。
x , y はマウスのローカル座標です。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventMouseEnter
マウスがウインドウに入った時に発生します。
EventMouseOut
マウスがウインドウから出た時に発生します。
EventKey
キー入力があった時に発生します。
KeyCode は入力されたキーコード、ShiftStat はシフトキーの状態です。これ
は IOCS コール $02 で与えられるものと同じです。
EventInterval
タイマーイベントです。他にイベントが発生しなかった時にすべてのウインド
ウに対して発生します。
タイマーイベントは手前にあるウインドウから順に発生し、その途中で他のイ
ベントが発生した時は中断されます。よって、奥のほうにあるウインドウではタ
イマーイベントが発生する頻度は小さくなります。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventNon
ウインドウサーバ内部で使用。アプリケーションプログラムでは発生しません。
EventUser
クライアントが発生させるイベントで、クライアント間通信に使用します。
ComData , ComBuffer に必要なデータを設定して発生させます。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。
EventGraphic
グラフィックモードが変更された時に発生します。x に変更後の画面モード
が設定されています。
(注意)デフォルトのイベント属性ではこのイベントは発生しません。